package br.unicamp.ic.inf300.arena.persistencia.dao.impl;

import br.unicamp.ic.inf300.arena.modelo.controleacesso.Perfil;
import br.unicamp.ic.inf300.arena.modelo.controleacesso.UsuarioSistema;
import br.unicamp.ic.inf300.arena.persistencia.dao.IUsuarioPerfilDAO;
import br.unicamp.ic.inf300.framework.persistencia.SQLUtil;

/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * UsuarioPerfilDAOHsql.java
 */

public class UsuarioPerfilDAOHsql implements IUsuarioPerfilDAO {

	/**
	 * Valida se eh um usuario cadastrado e efetuou logon corretamente.
	 *
	 * @param br.unicamp.ic.inf300.arena.modelo.controleacesso.UsuarioSistema
	 *
	 * @throws Exception 
	 */
	public UsuarioSistema validarLogon(String usuario, String senha)
			throws Exception {
		UsuarioSistema usuarioSistema = null;

		StringBuffer stbQuery = new StringBuffer();
		stbQuery.append(" SELECT ");
		stbQuery.append("   u.login, p.codperfil ");
		stbQuery.append(" FROM ");
		stbQuery.append(IUsuarioPerfilDAO.TABELA_BD_USER + " u, " + IUsuarioPerfilDAO.TABELA_BD_ROLE + " p ");
		stbQuery.append(" WHERE ");
		stbQuery.append("   u.login = ? AND ");
		stbQuery.append("   u.senha = ? AND ");
		stbQuery.append("   u.codperfil = p.codperfil ");

		Object[] params = new Object[2];
        params[0] = usuario;
        params[1] = senha;
        //
		Object[] result = null;
		result = (Object[]) SQLUtil.selectARecord(stbQuery.toString(), params);
		if (result != null && result.length > 0) {
			usuarioSistema = new UsuarioSistema();
			usuarioSistema.setLoginId( (String) result[0] );
			usuarioSistema.setPerfil( Perfil.get((Integer) result[1]) );
		}
		return usuarioSistema;
	}
}